home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src-glu
/
nurbssrf.s
< prev
next >
Wrap
Text File
|
1998-12-15
|
77KB
|
4,284 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src-glu/nurbssrf.c
mc68030
mc68881
XREF _free_unified_knots
XREF _select_knot_working_range
XREF _fine_culling_test_3D
XREF _glu_do_sampling_param_3D
XREF _glu_do_sampling_uv
XREF _glu_do_sampling_3D
XREF _calc_new_ctrl_pts
XREF _calc_alphas
XREF _explode_knot
XREF _test_knot
XREF _call_user_error
XREF _glEvalMesh2
XREF _glEvalPoint2
XREF _glMapGrid2f
XREF _glEvalCoord2f
XREF _glMap2f
XREF _glEnd
XREF _glBegin
XREF _glGetIntegerv
XREF _glEnable
XREF _glFrontFace
XREF _memcpy
XREF _abort
XREF _malloc
XREF _free
XREF _abs
XREF _fabs__r
SECTION "_get_surface_dim:0",CODE
;static int
_get_surface_dim
move.l 4(a7),d0
L272
; switch(type)
sub.l #$DB0,d0
cmp.l #$8,d0
bhi.b L282
move.l L283(pc,d0.l*4),a0
jmp (a0)
L283
dc.l L276
dc.l L275
dc.l L277
dc.l L278
dc.l L279
dc.l L280
dc.l L281
dc.l L273
dc.l L274
;
L273
moveq #3,d0
rts
L274
moveq #4,d0
rts
L275
moveq #1,d0
rts
L276
moveq #4,d0
rts
L277
moveq #3,d0
rts
L278
moveq #1,d0
rts
L279
moveq #2,d0
rts
L280
moveq #3,d0
rts
L281
moveq #4,d0
rts
L282
; default: abort();
jsr _abort
moveq #0,d0
rts
SECTION "_test_nurbs_surface:0",CODE
rts
;static GLenum
_test_nurbs_surface
L309 EQU -$8
link a5,#L309
movem.l d2/a2/a3,-(a7)
move.l $C(a5),a2
move.l $8(a5),a3
L284
; if(attrib->sorder < 0 || attrib->torder < 0)
tst.l $1C(a2)
bmi.b L286
L285
tst.l $20(a2)
bpl.b L287
L286
; call_user_error(nobj,GLU_INVALID_VALUE);
move.l #$18A25,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L287
; glGetIntegerv(GL_MAX_EVAL_ORDER,&tmp_int);
pea -$8(a5)
pea $D30.w
jsr _glGetIntegerv
addq.w #$8,a7
; if(attrib->sorder > tmp_int || attrib->sorder < 2)
move.l $1C(a2),d0
cmp.l -$8(a5),d0
bgt.b L289
L288
move.l $1C(a2),d0
cmp.l #2,d0
bge.b L290
L289
; call_user_error(nobj,GLU_NURBS_ERROR1);
move.l #$1879B,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L290
; if(attrib->torder > tmp_int || attrib->torder < 2)
move.l $20(a2),d0
cmp.l -$8(a5),d0
bgt.b L292
L291
move.l $20(a2),d0
cmp.l #2,d0
bge.b L293
L292
; call_user_error(nobj,GLU_NURBS_ERROR1);
move.l #$1879B,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L293
; if(attrib->sknot_count < attrib->sorder +2)
move.l $1C(a2),d0
addq.l #2,d0
move.l (a2),d1
cmp.l d0,d1
bge.b L295
L294
; call_user_error(nobj,GLU_NURBS_ERROR2);
move.l #$1879C,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L295
; if(attrib->tknot_count < attrib->torder +2)
move.l $20(a2),d0
addq.l #2,d0
move.l $8(a2),d1
cmp.l d0,d1
bge.b L297
L296
; call_user_error(nobj,GLU_NURBS_ERROR2);
move.l #$1879C,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L297
; if(attrib->s_stride < 0 || attrib->t_stride < 0)
tst.l $10(a2)
bmi.b L299
L298
tst.l $14(a2)
bpl.b L300
L299
; call_user_error(nobj,GLU_NURBS_ERROR34);
move.l #$187BC,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L300
; if(attrib->sknot==NULL || attrib->tknot==NULL || attrib->ctrlarray
move.l 4(a2),a0
cmp.w #0,a0
beq.b L303
L301
move.l $C(a2),a0
cmp.w #0,a0
beq.b L303
L302
move.l $18(a2),a0
cmp.w #0,a0
bne.b L304
L303
; call_user_error(nobj,GLU_NURBS_ERROR36);
move.l #$187BE,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L304
; if((err=test_knot(attrib->tknot_count,attrib->tknot,attrib->torder)
move.l $20(a2),-(a7)
move.l $C(a2),-(a7)
move.l $8(a2),-(a7)
jsr _test_knot
add.w #$C,a7
tst.l d0
beq.b L306
L305
; call_user_error(nobj,err);
move.l d0,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L306
; if((err=test_knot(attrib->sknot_count,attrib->sknot,attrib->sorder)
move.l $1C(a2),-(a7)
move.l 4(a2),-(a7)
move.l (a2),-(a7)
jsr _test_knot
add.w #$C,a7
tst.l d0
beq.b L308
L307
; call_user_error(nobj,err);
move.l d0,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L308
moveq #0,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
SECTION "_test_nurbs_surfaces:0",CODE
;static GLenum
_test_nurbs_surfaces
move.l a2,-(a7)
move.l $8(a7),a2
L310
; if(test_nurbs_surface(nobj,&(nobj->surface.geom))!=GLU_NO_ERROR)
pea $B8(a2)
move.l a2,-(a7)
jsr _test_nurbs_surface
addq.w #$8,a7
tst.l d0
beq.b L312
L311
move.l #$18707,d0
move.l (a7)+,a2
rts
L312
; if(nobj->surface.color.type!=GLU_INVALID_ENUM)
move.l $10C(a2),d0
cmp.l #$18A24,d0
beq.b L315
L313
; if(test_nurbs_surface(nobj,&(nobj->surface.color))!=GLU_NO_ERROR)
pea $E4(a2)
move.l a2,-(a7)
jsr _test_nurbs_surface
addq.w #$8,a7
tst.l d0
beq.b L315
L314
move.l #$18707,d0
move.l (a7)+,a2
rts
L315
; if(nobj->surface.normal.type!=GLU_INVALID_ENUM)
move.l $164(a2),d0
cmp.l #$18A24,d0
beq.b L318
L316
; if(test_nurbs_surface(nobj,&(nobj->surface.normal))!=GLU_NO_ERRO
pea $13C(a2)
move.l a2,-(a7)
jsr _test_nurbs_surface
addq.w #$8,a7
tst.l d0
beq.b L318
L317
move.l #$18707,d0
move.l (a7)+,a2
rts
L318
; if(nobj->surface.texture.type!=GLU_INVALID_ENUM)
move.l $138(a2),d0
cmp.l #$18A24,d0
beq.b L321
L319
; if(test_nurbs_surface(nobj,&(nobj->surface.texture))!=GLU_NO_ERR
pea $110(a2)
move.l a2,-(a7)
jsr _test_nurbs_surface
addq.w #$8,a7
tst.l d0
beq.b L321
L320
move.l #$18707,d0
move.l (a7)+,a2
rts
L321
moveq #0,d0
move.l (a7)+,a2
rts
SECTION "_convert_surf:0",CODE
;static GLenum
_convert_surf
L390 EQU -$A8
link a5,#L390
movem.l d2-d5/a2-a4,-(a7)
move.l $14(a5),a4
L322
; if((s_knot->unified_knot !=NULL && s_knot->unified_nknots==0) ||
move.l $8(a5),a1
move.l $8(a1),a0
cmp.w #0,a0
beq.b L324
L323
move.l $8(a5),a0
tst.l $C(a0)
beq.b L326
L324
move.l $C(a5),a1
move.l $8(a1),a0
cmp.w #0,a0
beq.b L331
L325
move.l $C(a5),a0
tst.l $C(a0)
bne.b L331
L326
; if(s_knot->unified_knot)
move.l $8(a5),a1
tst.l $8(a1)
beq.b L328
L327
; free(s_knot->unified_knot);
move.l $8(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; s_knot->unified_knot=NULL;
move.l $8(a5),a1
clr.l $8(a1)
L328
; if(t_knot->unified_knot)
move.l $C(a5),a1
tst.l $8(a1)
beq.b L330
L329
; free(t_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; t_knot->unified_knot=NULL;
move.l $C(a5),a1
clr.l $8(a1)
L330
; *s_n_ctrl=0;
move.l $18(a5),a0
clr.l (a0)
; *t_n_ctrl=0;
move.l $1C(a5),a0
clr.l (a0)
moveq #0,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L331
; t_cnt=attrib->tknot_count-attrib->torder;
move.l $10(a5),a0
move.l $8(a0),d5
move.l $10(a5),a0
sub.l $20(a0),d5
; s_cnt=attrib->sknot_count-attrib->sorder;
; if((tmp_ctrl=(GLfloat **)malloc(sizeof(GLfloat *)*t_cnt))==NULL)
move.l d5,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,a2
cmp.w #0,a2
bne.b L333
L332
move.l #$18A26,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L333
; if((err=explode_knot(s_knot))!=GLU_NO_ERROR)
move.l $8(a5),-(a7)
jsr _explode_knot
addq.w #4,a7
move.l d0,d3
beq.b L337
L334
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; if(s_knot->unified_knot)
move.l $8(a5),a1
tst.l $8(a1)
beq.b L336
L335
; free(s_knot->unified_knot);
move.l $8(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; s_knot->unified_knot=NULL;
move.l $8(a5),a1
clr.l $8(a1)
L336
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L337
; if(s_knot->unified_knot)
move.l $8(a5),a1
tst.l $8(a1)
beq.b L339
L338
; free(s_knot->unified_knot);
move.l $8(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; s_knot->unified_knot=NULL;
move.l $8(a5),a1
clr.l $8(a1)
L339
; if((err=calc_alphas(s_knot))!=GLU_NO_ERROR)
move.l $8(a5),-(a7)
jsr _calc_alphas
addq.w #4,a7
move.l d0,d3
beq.b L341
L340
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; free(s_knot->new_knot);
move.l $8(a5),a1
move.l $22(a1),-(a7)
jsr _free
addq.w #4,a7
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L341
; free(s_knot->new_knot);
move.l $8(a5),a1
move.l $22(a1),-(a7)
jsr _free
addq.w #4,a7
; ctrl_offset=attrib->ctrlarray;
move.l $10(a5),a0
move.l $18(a0),a3
; dim=attrib->dim;
move.l $10(a5),a0
move.l $24(a0),d4
; for(i=0;
moveq #0,d2
bra.b L348
L342
; if((err=calc_new_ctrl_pts(ctrl_offset,attrib->s_stride,s_knot,
pea -$C(a5)
pea 0(a2,d2.l*4)
move.l d4,-(a7)
move.l $8(a5),-(a7)
move.l $10(a5),a0
move.l $10(a0),-(a7)
move.l a3,-(a7)
jsr _calc_new_ctrl_pts
add.w #$18,a7
move.l d0,d3
beq.b L347
L343
; for(--i;
subq.l #1,d2
bra.b L345
L344
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
subq.l #1,d2
L345
cmp.l #0,d2
ble.b L344
L346
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; free(s_knot->alpha);
move.l $8(a5),a1
move.l $26(a1),-(a7)
jsr _free
addq.w #4,a7
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L347
; ctrl_offset+=attrib->t_stride;
move.l $10(a5),a0
move.l $14(a0),d0
moveq #2,d1
asl.l d1,d0
add.l a3,d0
move.l d0,a3
addq.l #1,d2
L348
cmp.l d5,d2
blt.b L342
L349
; free(s_knot->alpha);
move.l $8(a5),a1
move.l $26(a1),-(a7)
jsr _free
addq.w #4,a7
; tmp_stride=dim*tmp_n_control;
move.l d4,d3
muls.l -$C(a5),d3
; if((*new_ctrl=(GLfloat *)malloc(sizeof(GLfloat)*tmp_stride*t_cnt))
move.l d3,d0
moveq #2,d3
asl.l d3,d0
mulu.l d5,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a4,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L354
L350
; for(i=0;
moveq #0,d2
bra.b L352
L351
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
addq.l #1,d2
L352
cmp.l d5,d2
blt.b L351
L353
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L354
; for(i=0;
moveq #0,d2
bra.b L359
L355
; for(j=0;
moveq #0,d3
bra.b L357
L356
; sizeof(GLfloat)*dim);
move.l d4,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
move.l d4,d0
muls.l d2,d0
move.l 0(a2,d3.l*4),a0
pea 0(a0,d0.l*4)
move.l a4,a1
move.l d3,d0
muls.l d4,d0
move.l (a1),a0
lea 0(a0,d0.l*4),a0
move.l d2,d0
muls.l d4,d0
muls.l d5,d0
pea 0(a0,d0.l*4)
jsr _memcpy
add.w #$C,a7
addq.l #1,d3
L357
cmp.l d5,d3
blt.b L356
L358
addq.l #1,d2
L359
cmp.l -$C(a5),d2
blt.b L355
L360
; for(i=0;
moveq #0,d2
bra.b L362
L361
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
addq.l #1,d2
L362
cmp.l d5,d2
blt.b L361
L363
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; *s_n_ctrl=tmp_n_control;
move.l $18(a5),a0
move.l -$C(a5),(a0)
; if((tmp_ctrl=(GLfloat **)malloc(sizeof(GLfloat *)*(*s_n_ctrl)))==N
move.l $18(a5),a0
move.l (a0),d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,a2
cmp.w #0,a2
bne.b L365
L364
move.l #$18A26,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L365
; if((err=explode_knot(t_knot))!=GLU_NO_ERROR)
move.l $C(a5),-(a7)
jsr _explode_knot
addq.w #4,a7
move.l d0,d3
beq.b L369
L366
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; if(t_knot->unified_knot)
move.l $C(a5),a1
tst.l $8(a1)
beq.b L368
L367
; free(t_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; t_knot->unified_knot=NULL;
move.l $C(a5),a1
clr.l $8(a1)
L368
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L369
; if(t_knot->unified_knot)
move.l $C(a5),a1
tst.l $8(a1)
beq.b L371
L370
; free(t_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; t_knot->unified_knot=NULL;
move.l $C(a5),a1
clr.l $8(a1)
L371
; if((err=calc_alphas(t_knot))!=GLU_NO_ERROR)
move.l $C(a5),-(a7)
jsr _calc_alphas
addq.w #4,a7
move.l d0,d3
beq.b L373
L372
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; free(t_knot->new_knot);
move.l $C(a5),a1
move.l $22(a1),-(a7)
jsr _free
addq.w #4,a7
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L373
; free(t_knot->new_knot);
move.l $C(a5),a1
move.l $22(a1),-(a7)
jsr _free
addq.w #4,a7
; ctrl_offset=*new_ctrl;
move.l a4,a0
move.l (a0),a3
; for(i=0;
moveq #0,d2
bra.b L380
L374
; if((err=calc_new_ctrl_pts(ctrl_offset,dim,t_knot,
pea -$C(a5)
pea 0(a2,d2.l*4)
move.l d4,-(a7)
move.l $C(a5),-(a7)
move.l d4,-(a7)
move.l a3,-(a7)
jsr _calc_new_ctrl_pts
add.w #$18,a7
move.l d0,d3
beq.b L379
L375
; for(--i;
subq.l #1,d2
bra.b L377
L376
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
subq.l #1,d2
L377
cmp.l #0,d2
ble.b L376
L378
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; free(t_knot->alpha);
move.l $C(a5),a1
move.l $26(a1),-(a7)
jsr _free
addq.w #4,a7
move.l d3,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L379
; ctrl_offset+=dim*t_cnt;
move.l d4,d0
muls.l d5,d0
moveq #2,d1
asl.l d1,d0
add.l a3,d0
move.l d0,a3
addq.l #1,d2
L380
move.l $18(a5),a0
cmp.l (a0),d2
blt.b L374
L381
; free(t_knot->alpha);
move.l $C(a5),a1
move.l $26(a1),-(a7)
jsr _free
addq.w #4,a7
; free(*new_ctrl);
move.l a4,a1
move.l (a1),-(a7)
jsr _free
addq.w #4,a7
; tmp_stride=dim*tmp_n_control;
move.l d4,d3
muls.l -$C(a5),d3
; if((*new_ctrl=(GLfloat *)malloc(sizeof(GLfloat)*tmp_stride*(*s_n_c
move.l d3,d0
moveq #2,d1
asl.l d1,d0
move.l $18(a5),a0
mulu.l (a0),d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a4,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L386
L382
; for(i=0;
moveq #0,d2
bra.b L384
L383
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
addq.l #1,d2
L384
move.l $18(a5),a0
cmp.l (a0),d2
blt.b L383
L385
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
L386
; for(i=0;
moveq #0,d2
bra.b L388
L387
;i*tmp_stride,tmp_
move.l d3,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
move.l 0(a2,d2.l*4),-(a7)
move.l a4,a1
move.l d2,d0
muls.l d3,d0
move.l (a1),a0
pea 0(a0,d0.l*4)
jsr _memcpy
add.w #$C,a7
; free(tmp_ctrl[i]);
move.l 0(a2,d2.l*4),-(a7)
jsr _free
addq.w #4,a7
addq.l #1,d2
L388
move.l $18(a5),a0
cmp.l (a0),d2
blt.b L387
L389
; free(tmp_ctrl);
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; *t_n_ctrl=tmp_n_control;
move.l $1C(a5),a0
move.l -$C(a5),(a0)
moveq #0,d0
movem.l (a7)+,d2-d5/a2-a4
unlk a5
rts
SECTION "_fill_knot_structures:0",CODE
;static GLenum
_fill_knot_structures
L465 EQU -$14
link a5,#L465
movem.l d2-d4/a2-a4,-(a7)
move.l $8(a5),a3
move.l $28(a5),a4
L391
; geom_s_knot->unified_knot=NULL;
move.l $C(a5),a1
clr.l $8(a1)
; knot=geom_s_knot->knot=nobj->surface.geom.sknot;
move.l $BC(a3),a2
move.l $C(a5),a0
move.l a2,(a0)
; nknots=geom_s_knot->nknots=nobj->surface.geom.sknot_count;
move.l $B8(a3),d4
move.l $C(a5),a0
move.l d4,4(a0)
; order=geom_s_knot->order=nobj->surface.geom.sorder;
move.l $D4(a3),d0
move.l $C(a5),a0
move.l d0,$10(a0)
; geom_s_knot->delta_nknots=0;
move.l $C(a5),a0
clr.l $1C(a0)
; t_min=geom_s_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $C(a5),a0
move.l d3,$14(a0)
; t_max=geom_s_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $C(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L393
L392
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L393
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L395
L394
; geom_s_knot->open_at_begin=GL_TRUE;
move.l $C(a5),a0
move.b #1,$20(a0)
bra.b L396
L395
; geom_s_knot->open_at_begin=GL_FALSE;
move.l $C(a5),a0
clr.b $20(a0)
L396
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L398
L397
; geom_s_knot->open_at_end=GL_TRUE;
move.l $C(a5),a0
move.b #1,$21(a0)
bra.b L399
L398
; geom_s_knot->open_at_end=GL_FALSE;
move.l $C(a5),a0
clr.b $21(a0)
L399
; geom_t_knot->unified_knot=NULL;
move.l $10(a5),a1
clr.l $8(a1)
; knot=geom_t_knot->knot=nobj->surface.geom.tknot;
move.l $C4(a3),a2
move.l $10(a5),a0
move.l a2,(a0)
; nknots=geom_t_knot->nknots=nobj->surface.geom.tknot_count;
move.l $C0(a3),d4
move.l $10(a5),a0
move.l d4,4(a0)
; order=geom_t_knot->order=nobj->surface.geom.torder;
move.l $D8(a3),d0
move.l $10(a5),a0
move.l d0,$10(a0)
; geom_t_knot->delta_nknots=0;
move.l $10(a5),a0
clr.l $1C(a0)
; t_min=geom_t_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $10(a5),a0
move.l d3,$14(a0)
; t_max=geom_t_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $10(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L401
L400
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L401
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L403
L402
; geom_t_knot->open_at_begin=GL_TRUE;
move.l $10(a5),a0
move.b #1,$20(a0)
bra.b L404
L403
; geom_t_knot->open_at_begin=GL_FALSE;
move.l $10(a5),a0
clr.b $20(a0)
L404
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L406
L405
; geom_t_knot->open_at_end=GL_TRUE;
move.l $10(a5),a0
move.b #1,$21(a0)
bra.b L407
L406
; geom_t_knot->open_at_end=GL_FALSE;
move.l $10(a5),a0
clr.b $21(a0)
L407
; if(nobj->surface.color.type!=GLU_INVALID_ENUM)
move.l $10C(a3),d0
cmp.l #$18A24,d0
beq L425
L408
; color_s_knot->unified_knot=(GLfloat *)1;
move.l $14(a5),a1
move.l #1,$8(a1)
; knot=color_s_knot->knot=nobj->surface.color.sknot;
move.l $E8(a3),a2
move.l $14(a5),a0
move.l a2,(a0)
; nknots=color_s_knot->nknots=nobj->surface.color.sknot_count;
move.l $E4(a3),d4
move.l $14(a5),a0
move.l d4,4(a0)
; order=color_s_knot->order=nobj->surface.color.sorder;
move.l $100(a3),d0
move.l $14(a5),a0
move.l d0,$10(a0)
; color_s_knot->delta_nknots=0;
move.l $14(a5),a0
clr.l $1C(a0)
; t_min=color_s_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $14(a5),a0
move.l d3,$14(a0)
; t_max=color_s_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $14(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L410
L409
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L410
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L412
L411
; color_s_knot->open_at_begin=GL_TRUE;
move.l $14(a5),a0
move.b #1,$20(a0)
bra.b L413
L412
; color_s_knot->open_at_begin=GL_FALSE;
move.l $14(a5),a0
clr.b $20(a0)
L413
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L415
L414
; color_s_knot->open_at_end=GL_TRUE;
move.l $14(a5),a0
move.b #1,$21(a0)
bra.b L416
L415
; color_s_knot->open_at_end=GL_FALSE;
move.l $14(a5),a0
clr.b $21(a0)
L416
; color_t_knot->unified_knot=(GLfloat *)1;
move.l $18(a5),a1
move.l #1,$8(a1)
; knot=color_t_knot->knot=nobj->surface.color.tknot;
move.l $F0(a3),a2
move.l $18(a5),a0
move.l a2,(a0)
; nknots=color_t_knot->nknots=nobj->surface.color.tknot_count;
move.l $EC(a3),d4
move.l $18(a5),a0
move.l d4,4(a0)
; order=color_t_knot->order=nobj->surface.color.torder;
move.l $104(a3),d0
move.l $18(a5),a0
move.l d0,$10(a0)
; color_t_knot->delta_nknots=0;
move.l $18(a5),a0
clr.l $1C(a0)
; t_min=color_t_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $18(a5),a0
move.l d3,$14(a0)
; t_max=color_t_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $18(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L418
L417
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L418
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L420
L419
; color_t_knot->open_at_begin=GL_TRUE;
move.l $18(a5),a0
move.b #1,$20(a0)
bra.b L421
L420
; color_t_knot->open_at_begin=GL_FALSE;
move.l $18(a5),a0
clr.b $20(a0)
L421
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L423
L422
; color_t_knot->open_at_end=GL_TRUE;
move.l $18(a5),a0
move.b #1,$21(a0)
bra.b L424
L423
; color_t_knot->open_at_end=GL_FALSE;
move.l $18(a5),a0
clr.b $21(a0)
L424
bra.b L426
L425
; color_s_knot->unified_knot=NULL;
move.l $14(a5),a1
clr.l $8(a1)
; color_t_knot->unified_knot=NULL;
move.l $18(a5),a1
clr.l $8(a1)
L426
; if(nobj->surface.normal.type!=GLU_INVALID_ENUM)
move.l $164(a3),d0
cmp.l #$18A24,d0
beq L444
L427
; normal_s_knot->unified_knot=(GLfloat *)1;
move.l $1C(a5),a1
move.l #1,$8(a1)
; knot=normal_s_knot->knot=nobj->surface.normal.sknot;
move.l $140(a3),a2
move.l $1C(a5),a0
move.l a2,(a0)
; nknots=normal_s_knot->nknots=nobj->surface.normal.sknot_count;
move.l $13C(a3),d4
move.l $1C(a5),a0
move.l d4,4(a0)
; order=normal_s_knot->order=nobj->surface.normal.sorder;
move.l $158(a3),d0
move.l $1C(a5),a0
move.l d0,$10(a0)
; normal_s_knot->delta_nknots=0;
move.l $1C(a5),a0
clr.l $1C(a0)
; t_min=normal_s_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $1C(a5),a0
move.l d3,$14(a0)
; t_max=normal_s_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $1C(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L429
L428
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L429
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L431
L430
; normal_s_knot->open_at_begin=GL_TRUE;
move.l $1C(a5),a0
move.b #1,$20(a0)
bra.b L432
L431
; normal_s_knot->open_at_begin=GL_FALSE;
move.l $1C(a5),a0
clr.b $20(a0)
L432
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L434
L433
; normal_s_knot->open_at_end=GL_TRUE;
move.l $1C(a5),a0
move.b #1,$21(a0)
bra.b L435
L434
; normal_s_knot->open_at_end=GL_FALSE;
move.l $1C(a5),a0
clr.b $21(a0)
L435
; normal_t_knot->unified_knot=(GLfloat *)1;
move.l $20(a5),a1
move.l #1,$8(a1)
; knot=normal_t_knot->knot=nobj->surface.normal.tknot;
move.l $148(a3),a2
move.l $20(a5),a0
move.l a2,(a0)
; nknots=normal_t_knot->nknots=nobj->surface.normal.tknot_count;
move.l $144(a3),d4
move.l $20(a5),a0
move.l d4,4(a0)
; order=normal_t_knot->order=nobj->surface.normal.torder;
move.l $15C(a3),d0
move.l $20(a5),a0
move.l d0,$10(a0)
; normal_t_knot->delta_nknots=0;
move.l $20(a5),a0
clr.l $1C(a0)
; t_min=normal_t_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $20(a5),a0
move.l d3,$14(a0)
; t_max=normal_t_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $20(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L437
L436
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L437
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L439
L438
; normal_t_knot->open_at_begin=GL_TRUE;
move.l $20(a5),a0
move.b #1,$20(a0)
bra.b L440
L439
; normal_t_knot->open_at_begin=GL_FALSE;
move.l $20(a5),a0
clr.b $20(a0)
L440
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L442
L441
; normal_t_knot->open_at_end=GL_TRUE;
move.l $20(a5),a0
move.b #1,$21(a0)
bra.b L443
L442
; normal_t_knot->open_at_end=GL_FALSE;
move.l $20(a5),a0
clr.b $21(a0)
L443
bra.b L445
L444
; normal_s_knot->unified_knot=NULL;
move.l $1C(a5),a1
clr.l $8(a1)
; normal_t_knot->unified_knot=NULL;
move.l $20(a5),a1
clr.l $8(a1)
L445
; if(nobj->surface.texture.type!=GLU_INVALID_ENUM)
move.l $138(a3),d0
cmp.l #$18A24,d0
beq L463
L446
; texture_s_knot->unified_knot=(GLfloat *)1;
move.l $24(a5),a1
move.l #1,$8(a1)
; knot=texture_s_knot->knot=nobj->surface.texture.sknot;
move.l $114(a3),a2
move.l $24(a5),a0
move.l a2,(a0)
; nknots=texture_s_knot->nknots=nobj->surface.texture.sknot_count;
move.l $110(a3),d4
move.l $24(a5),a0
move.l d4,4(a0)
; order=texture_s_knot->order=nobj->surface.texture.sorder;
move.l $12C(a3),d0
move.l $24(a5),a0
move.l d0,$10(a0)
; texture_s_knot->delta_nknots=0;
move.l $24(a5),a0
clr.l $1C(a0)
; t_min=texture_s_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l $24(a5),a0
move.l d3,$14(a0)
; t_max=texture_s_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l $24(a5),a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L448
L447
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L448
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L450
L449
; texture_s_knot->open_at_begin=GL_TRUE;
move.l $24(a5),a0
move.b #1,$20(a0)
bra.b L451
L450
; texture_s_knot->open_at_begin=GL_FALSE;
move.l $24(a5),a0
clr.b $20(a0)
L451
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L453
L452
; texture_s_knot->open_at_end=GL_TRUE;
move.l $24(a5),a0
move.b #1,$21(a0)
bra.b L454
L453
; texture_s_knot->open_at_end=GL_FALSE;
move.l $24(a5),a0
clr.b $21(a0)
L454
; texture_t_knot->unified_knot=(GLfloat *)1;
move.l a4,a1
move.l #1,$8(a1)
; knot=texture_t_knot->knot=nobj->surface.texture.tknot;
move.l $11C(a3),a2
move.l a4,a0
move.l a2,(a0)
; nknots=texture_t_knot->nknots=nobj->surface.texture.tknot_count;
move.l $118(a3),d4
move.l a4,a0
move.l d4,4(a0)
; order=texture_t_knot->order=nobj->surface.texture.torder;
move.l $130(a3),d0
move.l a4,a0
move.l d0,$10(a0)
; texture_t_knot->delta_nknots=0;
move.l a4,a0
clr.l $1C(a0)
; t_min=texture_t_knot->t_min=order-1;
move.l d0,d3
subq.l #1,d3
move.l a4,a0
move.l d3,$14(a0)
; t_max=texture_t_knot->t_max=nknots-order;
move.l d4,d2
sub.l d0,d2
move.l a4,a0
move.l d2,$18(a0)
; if(fabs(knot[t_min]-knot[t_max])<EPSILON)
fmove.s 0(a2,d3.l*4),fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L456
L455
; call_user_error(nobj,GLU_NURBS_ERROR3);
move.l #$1879D,-(a7)
move.l a3,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L456
; if(fabs(knot[0]-knot[t_min])<EPSILON)
fmove.s (a2),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L458
L457
; texture_t_knot->open_at_begin=GL_TRUE;
move.l a4,a0
move.b #1,$20(a0)
bra.b L459
L458
; texture_t_knot->open_at_begin=GL_FALSE;
move.l a4,a0
clr.b $20(a0)
L459
; if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
lea -4(a2),a0
fmove.s 0(a2,d2.l*4),fp0
fsub.s 0(a0,d4.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L461
L460
; texture_t_knot->open_at_end=GL_TRUE;
move.l a4,a0
move.b #1,$21(a0)
bra.b L462
L461
; texture_t_knot->open_at_end=GL_FALSE;
move.l a4,a0
clr.b $21(a0)
L462
bra.b L464
L463
; texture_s_knot->unified_knot=NULL;
move.l $24(a5),a1
clr.l $8(a1)
; texture_t_knot->unified_knot=NULL;
move.l a4,a1
clr.l $8(a1)
L464
moveq #0,d0
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
SECTION "_free_new_ctrl:0",CODE
;void
XDEF _free_new_ctrl
_free_new_ctrl
move.l a2,-(a7)
move.l $8(a7),a2
L466
; if(p->geom_ctrl)
tst.l (a2)
beq.b L468
L467
; free(p->geom_ctrl);
move.l (a2),-(a7)
jsr _free
addq.w #4,a7
L468
; if(p->geom_offsets)
tst.l $C(a2)
beq.b L470
L469
; free(p->geom_offsets);
move.l $C(a2),-(a7)
jsr _free
addq.w #4,a7
L470
; if(p->color_ctrl)
tst.l $18(a2)
beq.b L473
L471
; free(p->color_ctrl);
move.l $18(a2),-(a7)
jsr _free
addq.w #4,a7
; if(p->color_offsets)
tst.l $24(a2)
beq.b L473
L472
; free(p->color_offsets);
move.l $24(a2),-(a7)
jsr _free
addq.w #4,a7
L473
; if(p->normal_ctrl)
tst.l $30(a2)
beq.b L476
L474
; free(p->normal_ctrl);
move.l $30(a2),-(a7)
jsr _free
addq.w #4,a7
; if(p->normal_offsets)
tst.l $3C(a2)
beq.b L476
L475
; free(p->normal_offsets);
move.l $3C(a2),-(a7)
jsr _free
addq.w #4,a7
L476
; if(p->texture_ctrl)
tst.l $48(a2)
beq.b L479
L477
; free(p->texture_ctrl);
move.l $48(a2),-(a7)
jsr _free
addq.w #4,a7
; if(p->texture_offsets)
tst.l $54(a2)
beq.b L479
L478
; free(p->texture_offsets);
move.l $54(a2),-(a7)
jsr _free
addq.w #4,a7
L479
move.l (a7)+,a2
rts
SECTION "_convert_surfs:0",CODE
;static GLenum
_convert_surfs
L498 EQU -$154
link a5,#L498
movem.l d2/a2/a3,-(a7)
movem.l $8(a5),a2/a3
L480
; if((err=fill_knot_structures(nobj,&geom_s_knot,&geom_t_knot,
pea -$150(a5)
pea -$A8(a5)
pea -$126(a5)
pea -$7E(a5)
pea -$FC(a5)
pea -$54(a5)
pea -$D2(a5)
pea -$2A(a5)
move.l a2,-(a7)
jsr _fill_knot_structures
add.w #$24,a7
move.l d0,d2
beq.b L482
L481
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L482
; if((err=select_knot_working_range(nobj,&geom_s_knot,&color_s_knot,
pea -$A8(a5)
pea -$7E(a5)
pea -$54(a5)
pea -$2A(a5)
move.l a2,-(a7)
jsr _select_knot_working_range
add.w #$14,a7
move.l d0,d2
beq.b L484
L483
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L484
; if((err=select_knot_working_range(nobj,&geom_t_knot,&color_t_knot,
pea -$150(a5)
pea -$126(a5)
pea -$FC(a5)
pea -$D2(a5)
move.l a2,-(a7)
jsr _select_knot_working_range
add.w #$14,a7
move.l d0,d2
beq.b L486
L485
; free_unified_knots(&geom_s_knot,&color_s_knot,&normal_s_knot,
pea -$A8(a5)
pea -$7E(a5)
pea -$54(a5)
pea -$2A(a5)
jsr _free_unified_knots
add.w #$10,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L486
; nobj->surface.geom.dim=get_surface_dim(nobj->surface.geom.type);
move.l $E0(a2),-(a7)
jsr _get_surface_dim
addq.w #4,a7
move.l d0,$DC(a2)
; if((err=convert_surf(&geom_s_knot,&geom_t_knot,&(nobj->surface.geo
pea $14(a3)
pea $10(a3)
move.l a3,-(a7)
pea $B8(a2)
pea -$D2(a5)
pea -$2A(a5)
jsr _convert_surf
add.w #$18,a7
move.l d0,d2
beq.b L488
L487
; free_unified_knots(&geom_s_knot,&color_s_knot,&normal_s_knot,
pea -$A8(a5)
pea -$7E(a5)
pea -$54(a5)
pea -$2A(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_unified_knots(&geom_t_knot,&color_t_knot,&normal_t_knot,
pea -$150(a5)
pea -$126(a5)
pea -$FC(a5)
pea -$D2(a5)
jsr _free_unified_knots
add.w #$10,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L488
; if(color_s_knot.unified_knot)
tst.l -$4C(a5)
beq L491
L489
; nobj->surface.color.dim=get_surface_dim(nobj->surface.color.type)
move.l $10C(a2),-(a7)
jsr _get_surface_dim
addq.w #4,a7
move.l d0,$108(a2)
; if((err=convert_surf(&color_s_knot,&color_t_knot,&(nobj->surface
pea $2C(a3)
pea $28(a3)
pea $18(a3)
pea $E4(a2)
pea -$FC(a5)
pea -$54(a5)
jsr _convert_surf
add.w #$18,a7
move.l d0,d2
beq.b L491
L490
; free_unified_knots(&color_s_knot,&color_s_knot,&normal_s_knot,
pea -$A8(a5)
pea -$7E(a5)
pea -$54(a5)
pea -$54(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_unified_knots(&color_t_knot,&color_t_knot,&normal_t_knot,
pea -$150(a5)
pea -$126(a5)
pea -$FC(a5)
pea -$FC(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_new_ctrl(new_ctrl);
move.l a3,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L491
; if(normal_s_knot.unified_knot)
tst.l -$76(a5)
beq L494
L492
; nobj->surface.normal.dim=get_surface_dim(nobj->surface.normal.ty
move.l $164(a2),-(a7)
jsr _get_surface_dim
addq.w #4,a7
move.l d0,$160(a2)
; if((err=convert_surf(&normal_s_knot,&normal_t_knot,
pea $44(a3)
pea $40(a3)
pea $30(a3)
pea $13C(a2)
pea -$126(a5)
pea -$7E(a5)
jsr _convert_surf
add.w #$18,a7
move.l d0,d2
beq.b L494
L493
; free_unified_knots(&normal_s_knot,&normal_s_knot,&normal_s_kno
pea -$A8(a5)
pea -$7E(a5)
pea -$7E(a5)
pea -$7E(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_unified_knots(&normal_t_knot,&normal_t_knot,&normal_t_kno
pea -$150(a5)
pea -$126(a5)
pea -$126(a5)
pea -$126(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_new_ctrl(new_ctrl);
move.l a3,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L494
; if(texture_s_knot.unified_knot)
tst.l -$A0(a5)
beq L497
L495
; nobj->surface.texture.dim=get_surface_dim(nobj->surface.texture.
move.l $138(a2),-(a7)
jsr _get_surface_dim
addq.w #4,a7
move.l d0,$134(a2)
; if((err=convert_surf(&texture_s_knot,&texture_t_knot,
pea $5C(a3)
pea $58(a3)
pea $48(a3)
pea $110(a2)
pea -$150(a5)
pea -$A8(a5)
jsr _convert_surf
add.w #$18,a7
move.l d0,d2
beq.b L497
L496
; free_unified_knots(&texture_s_knot,&texture_s_knot,&texture_s_
pea -$A8(a5)
pea -$A8(a5)
pea -$A8(a5)
pea -$A8(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_unified_knots(&texture_t_knot,&texture_t_knot,&texture_t_
pea -$150(a5)
pea -$150(a5)
pea -$150(a5)
pea -$150(a5)
jsr _free_unified_knots
add.w #$10,a7
; free_new_ctrl(new_ctrl);
move.l a3,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l d2,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
L497
moveq #0,d0
movem.l (a7)+,d2/a2/a3
unlk a5
rts
SECTION "_tesselate_strip_t_line:0",CODE
;void
XDEF _tesselate_strip_t_line
_tesselate_strip_t_line
L514 EQU -$20
link a5,#L514
movem.l d2-d7,-(a7)
movem.l $18(a5),d0/d7
move.l $C(a5),d1
move.l $8(a5),d2
move.l $20(a5),d3
move.l $14(a5),d5
L499
; top_cnt=top_end-top_start;
sub.l d2,d1
move.l d1,-4(a5)
; direction= (top_cnt>=0 ? 1: -1);
tst.l -4(a5)
bmi.b L501
L500
moveq #1,d6
bra.b L502
L501
moveq #-1,d6
L502
; bottom_cnt=bottom_end-bottom_start;
sub.l d5,d0
move.l d0,-$8(a5)
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; while(top_cnt)
bra L512
L503
; if(bottom_cnt)
tst.l -$8(a5)
beq.b L505
L504
; tri_cnt=top_cnt/bottom_cnt;
move.l -4(a5),d0
divsl.l -$8(a5),d0
move.l d0,-$C(a5)
bra.b L506
L505
; tri_cnt=abs(top_cnt);
move.l -4(a5),-(a7)
jsr _abs
addq.w #4,a7
move.l d0,-$C(a5)
L506
; for(k=0;
moveq #0,d4
bra.b L508
L507
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l d5,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d7,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(top_z,top_start);
move.l d2,-(a7)
move.l $10(a5),-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
addq.l #1,d4
add.l d6,d2
L508
cmp.l -$C(a5),d4
ble.b L507
L509
; if(bottom_cnt)
tst.l -$8(a5)
beq L511
L510
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l d5,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d7,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; bottom_start+=direction;
add.l d6,d5
; top_start-=direction;
sub.l d6,d2
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l d5,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d7,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l d5,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d7,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(top_z,top_start);
move.l d2,-(a7)
move.l $10(a5),-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
L511
; top_cnt-=direction*tri_cnt;
move.l d6,d0
muls.l -$C(a5),d0
sub.l d0,-4(a5)
; bottom_cnt-=direction;
sub.l d6,-$8(a5)
L512
tst.l -4(a5)
bne L503
L513
; glEnd();
jsr _glEnd
movem.l (a7)+,d2-d7
unlk a5
rts
SECTION "_tesselate_strip_t_fill:0",CODE
;void
XDEF _tesselate_strip_t_fill
_tesselate_strip_t_fill
L530 EQU -$14
link a5,#L530
movem.l d2-d7,-(a7)
move.l $18(a5),d0
move.l $C(a5),d1
move.l $8(a5),d2
L515
; top_cnt=top_end-top_start;
sub.l d2,d1
move.l d1,d6
; direction= (top_cnt>=0 ? 1: -1);
bmi.b L517
L516
moveq #1,d4
bra.b L518
L517
moveq #-1,d4
L518
; bottom_cnt=bottom_end-bottom_start;
sub.l $14(a5),d0
move.l d0,d7
; while(top_cnt)
bra L528
L519
; if(bottom_cnt)
tst.l d7
beq.b L521
L520
; tri_cnt=top_cnt/bottom_cnt;
move.l d6,d5
divsl.l d7,d5
bra.b L522
L521
; tri_cnt=abs(top_cnt);
move.l d6,-(a7)
jsr _abs
addq.w #4,a7
move.l d0,d5
L522
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l $14(a5),fp0
fmove.l $20(a5),fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l $1C(a5),fp0
fmove.l $20(a5),fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; for(k=0;
moveq #0,d3
bra.b L524
L523
; glEvalPoint2(top_z,top_start);
move.l d2,-(a7)
move.l $10(a5),-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
addq.l #1,d3
add.l d4,d2
L524
cmp.l d5,d3
ble.b L523
L525
; if(bottom_cnt)
tst.l d7
beq.b L527
L526
; bottom_start+=direction;
add.l d4,$14(a5)
; top_start-=direction;
sub.l d4,d2
; glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
fmove.l $14(a5),fp0
fmove.l $20(a5),fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l $1C(a5),fp0
fmove.l $20(a5),fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L527
; glEnd();
jsr _glEnd
; top_cnt-=direction*tri_cnt;
move.l d4,d0
muls.l d5,d0
move.l d6,d1
sub.l d0,d1
move.l d1,d6
; bottom_cnt-=direction;
move.l d7,d0
sub.l d4,d0
move.l d0,d7
L528
tst.l d6
bne L519
L529
movem.l (a7)+,d2-d7
unlk a5
rts
SECTION "_tesselate_strip_t:0",CODE
;void
XDEF _tesselate_strip_t
_tesselate_strip_t
movem.l d2-d7,-(a7)
movem.l $20(a7),d0-d5/d7
move.l $1C(a7),d6
L531
; if(display_mode==GL_FILL)
cmp.l #$1B02,d6
bne.b L533
L532
; tesselate_strip_t_fill(top_start,top_end,top_z,bottom_start,
move.l d7,-(a7)
move.l d5,-(a7)
move.l d4,-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
jsr _tesselate_strip_t_fill
add.w #$1C,a7
bra.b L534
L533
; tesselate_strip_t_line(top_start,top_end,top_z,bottom_start,
move.l d7,-(a7)
move.l d5,-(a7)
move.l d4,-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
jsr _tesselate_strip_t_line
add.w #$1C,a7
L534
movem.l (a7)+,d2-d7
rts
SECTION "_tesselate_strip_s_fill:0",CODE
;void
XDEF _tesselate_strip_s_fill
_tesselate_strip_s_fill
L550 EQU -$14
link a5,#L550
movem.l d2-d7,-(a7)
fmovem.x fp2,-(a7)
move.l $18(a5),d0
move.l $C(a5),d1
move.l $8(a5),d2
fmove.s $20(a5),fp2
L535
; top_cnt=top_end-top_start;
sub.l d2,d1
move.l d1,d6
; direction= (top_cnt>=0 ? 1: -1);
bmi.b L537
L536
moveq #1,d4
bra.b L538
L537
moveq #-1,d4
L538
; bottom_cnt=bottom_end-bottom_start;
sub.l $14(a5),d0
move.l d0,d7
; while(top_cnt)
bra L548
L539
; if(bottom_cnt)
tst.l d7
beq.b L541
L540
; tri_cnt=top_cnt/bottom_cnt;
move.l d6,d5
divsl.l d7,d5
bra.b L542
L541
; tri_cnt=abs(top_cnt);
move.l d6,-(a7)
jsr _abs
addq.w #4,a7
move.l d0,d5
L542
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
fmove.l $1C(a5),fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l $14(a5),fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; for(k=0;
moveq #0,d3
bra.b L544
L543
; glEvalPoint2(top_start,top_z);
move.l $10(a5),-(a7)
move.l d2,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
addq.l #1,d3
add.l d4,d2
L544
cmp.l d5,d3
ble.b L543
L545
; if(bottom_cnt)
tst.l d7
beq.b L547
L546
; bottom_start+=direction;
add.l d4,$14(a5)
; top_start-=direction;
sub.l d4,d2
; glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
fmove.l $1C(a5),fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l $14(a5),fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L547
; glEnd();
jsr _glEnd
; top_cnt-=direction*tri_cnt;
move.l d4,d0
muls.l d5,d0
move.l d6,d1
sub.l d0,d1
move.l d1,d6
; bottom_cnt-=direction;
move.l d7,d0
sub.l d4,d0
move.l d0,d7
L548
tst.l d6
bne L539
L549
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7
unlk a5
rts
SECTION "_tesselate_strip_s_line:0",CODE
;void
XDEF _tesselate_strip_s_line
_tesselate_strip_s_line
L566 EQU -$1C
link a5,#L566
movem.l d2-d7,-(a7)
fmovem.x fp2,-(a7)
movem.l $18(a5),d0/d6
move.l $C(a5),d1
move.l $8(a5),d2
move.l $14(a5),d4
fmove.s $20(a5),fp2
L551
; top_cnt=top_end-top_start;
sub.l d2,d1
move.l d1,-4(a5)
; direction= (top_cnt>=0 ? 1: -1);
tst.l -4(a5)
bmi.b L553
L552
moveq #1,d5
bra.b L554
L553
moveq #-1,d5
L554
; bottom_cnt=bottom_end-bottom_start;
sub.l d4,d0
move.l d0,-$8(a5)
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; while(top_cnt)
bra L564
L555
; if(bottom_cnt)
tst.l -$8(a5)
beq.b L557
L556
; tri_cnt=top_cnt/bottom_cnt;
move.l -4(a5),d0
divsl.l -$8(a5),d0
move.l d0,d7
bra.b L558
L557
; tri_cnt=abs(top_cnt);
move.l -4(a5),-(a7)
jsr _abs
addq.w #4,a7
move.l d0,d7
L558
; for(k=0;
moveq #0,d3
bra.b L560
L559
; glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
fmove.l d6,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(top_start,top_z);
move.l $10(a5),-(a7)
move.l d2,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
addq.l #1,d3
add.l d5,d2
L560
cmp.l d7,d3
ble.b L559
L561
; if(bottom_cnt)
tst.l -$8(a5)
beq.b L563
L562
;tesselate_top_right_c
fmove.l d6,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; bottom_start+=direction;
add.l d5,d4
; top_start-=direction;
sub.l d5,d2
; glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
fmove.l d6,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(top_start,top_z);
move.l $10(a5),-(a7)
move.l d2,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
fmove.l d6,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fdiv.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L563
; top_cnt-=direction*tri_cnt;
move.l d5,d0
muls.l d7,d0
sub.l d0,-4(a5)
; bottom_cnt-=direction;
sub.l d5,-$8(a5)
L564
tst.l -4(a5)
bne L555
L565
; glEnd();
jsr _glEnd
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7
unlk a5
rts
SECTION "_tesselate_strip_s:0",CODE
;void
XDEF _tesselate_strip_s
_tesselate_strip_s
movem.l d2-d6,-(a7)
movem.l $1C(a7),d0-d5
move.l $18(a7),d6
fmove.s $34(a7),fp0
L567
; if(display_mode==GL_FILL)
cmp.l #$1B02,d6
bne.b L569
L568
; tesselate_strip_s_fill(top_start,top_end,top_z,bottom_start,
fmove.s fp0,-(a7)
move.l d5,-(a7)
move.l d4,-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
jsr _tesselate_strip_s_fill
add.w #$1C,a7
bra.b L570
L569
; tesselate_strip_s_line(top_start,top_end,top_z,bottom_start,
fmove.s fp0,-(a7)
move.l d5,-(a7)
move.l d4,-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
jsr _tesselate_strip_s_line
add.w #$1C,a7
L570
movem.l (a7)+,d2-d6
rts
SECTION "_tesselate_bottom_left_corner:0",CODE
;void
XDEF _tesselate_bottom_left_corner
_tesselate_bottom_left_corner
fmovem.x fp2/fp3,-(a7)
move.l $1C(a7),d0
fmove.s $24(a7),fp2
fmove.s $20(a7),fp3
L571
; if(display_mode==GL_FILL)
cmp.l #$1B02,d0
bne.b L573
L572
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalPoint2(1,1);
pea 1.w
pea 1.w
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f(s_1,0.0);
clr.l -(a7)
fmove.s fp3,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,0.0);
clr.l -(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,t_1);
fmove.s fp2,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
bra.b L574
L573
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f(0.0,0.0);
clr.l -(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,t_1);
fmove.s fp2,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,0.0);
clr.l -(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(1,1);
pea 1.w
pea 1.w
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f(0.0,0.0);
clr.l -(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(s_1,0.0);
clr.l -(a7)
fmove.s fp3,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L574
; glEnd();
jsr _glEnd
fmovem.x (a7)+,fp2/fp3
rts
SECTION "_tesselate_bottom_right_corner:0",CODE
;void
XDEF _tesselate_bottom_right_corner
_tesselate_bottom_right_corner
movem.l d2/d3,-(a7)
fmovem.x fp2/fp3,-(a7)
movem.l $24(a7),d0/d3
move.l $2C(a7),d2
fmove.s $34(a7),fp2
fmove.s $30(a7),fp3
L575
; if(display_mode==GL_FILL)
cmp.l #$1B02,d0
bne.b L577
L576
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalPoint2(1,v_top);
move.l d3,-(a7)
pea 1.w
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f(0.0,v_bottom*t_1);
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,(v_bottom+1)*t_1);
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(s_1,(v_bottom+1)*t_1);
addq.l #1,d2
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
fmove.s fp3,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
bra L578
L577
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f(0.0,(v_bottom+1)*t_1);
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(1,v_top);
move.l d3,-(a7)
pea 1.w
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f(0.0,(v_bottom+1)*t_1);
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,v_bottom*t_1);
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(0.0,(v_bottom+1)*t_1);
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(s_1,(v_bottom+1)*t_1);
addq.l #1,d2
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
fmove.s fp3,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L578
; glEnd();
jsr _glEnd
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/d3
rts
SECTION "_tesselate_top_left_corner:0",CODE
;void
XDEF _tesselate_top_left_corner
_tesselate_top_left_corner
movem.l d2/d3,-(a7)
fmovem.x fp2/fp3,-(a7)
movem.l $24(a7),d0/d3
move.l $2C(a7),d2
fmove.s $30(a7),fp2
fmove.s $34(a7),fp3
L579
; if(display_mode==GL_FILL)
cmp.l #$1B02,d0
bne.b L581
L580
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalPoint2(u_right,1);
pea 1.w
move.l d3,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f((u_left+1)*s_1,t_1);
fmove.s fp3,-(a7)
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f((u_left+1)*s_1,0.0);
clr.l -(a7)
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_left*s_1,0.0);
clr.l -(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
bra L582
L581
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f((u_left+1)*s_1,0.0);
clr.l -(a7)
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(u_right,1);
pea 1.w
move.l d3,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f((u_left+1)*s_1,0.0);
clr.l -(a7)
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_left*s_1,0.0);
clr.l -(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f((u_left+1)*s_1,0.0);
clr.l -(a7)
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f((u_left+1)*s_1,t_1);
fmove.s fp3,-(a7)
addq.l #1,d2
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L582
; glEnd();
jsr _glEnd
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/d3
rts
SECTION "_tesselate_top_right_corner:0",CODE
; tesselate_strip_s(display_mode,left,1,top-1,right,
XDEF _tesselate_top_right_corner
_tesselate_top_right_corner
movem.l d2-d5,-(a7)
fmovem.x fp2/fp3,-(a7)
movem.l $2C(a7),d0/d4/d5
movem.l $38(a7),d2/d3
fmove.s $40(a7),fp2
fmove.s $44(a7),fp3
L583
; if(display_mode==GL_FILL)
cmp.l #$1B02,d0
bne L585
L584
; glBegin(GL_TRIANGLE_FAN);
pea 6.w
jsr _glBegin
addq.w #4,a7
; glEvalPoint2(u_left,v_bottom);
move.l d5,-(a7)
move.l d4,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f((u_right-1)*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
move.l d2,d0
subq.l #1,d0
fmove.l d0,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_right*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_right*s_1,(v_top-1)*t_1);
subq.l #1,d3
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
bra L586
L585
; glBegin(GL_LINES);
pea 1.w
jsr _glBegin
addq.w #4,a7
; glEvalCoord2f(u_right*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalPoint2(u_left,v_bottom);
move.l d5,-(a7)
move.l d4,-(a7)
jsr _glEvalPoint2
addq.w #$8,a7
; glEvalCoord2f(u_right*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_right*s_1,(v_top-1)*t_1);
move.l d3,d0
subq.l #1,d0
fmove.l d0,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f(u_right*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
; glEvalCoord2f((u_right-1)*s_1,v_top*t_1);
fmove.l d3,fp0
fmul.x fp3,fp0
fmove.s fp0,-(a7)
subq.l #1,d2
fmove.l d2,fp0
fmul.x fp2,fp0
fmove.s fp0,-(a7)
jsr _glEvalCoord2f
addq.w #$8,a7
L586
; glEnd();
jsr _glEnd
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2-d5
rts
SECTION "_nurbs_map_bezier:0",CODE
;static void
_nurbs_map_bezier
movem.l d2-d6/a2,-(a7)
movem.l $30(a7),d0/d1
move.l $2C(a7),d2
move.l $28(a7),d3
move.l $1C(a7),d6
move.l $20(a7),a0
move.l $24(a7),a1
L587
; if(s==0)
tst.l d0
bne.b L589
L588
; top=*(tfactors+t*3);
move.l d1,d3
muls.l #3,d3
move.l 0(a1,d3.l*4),d3
; bottom=*(tfactors+t*3+1);
move.l d1,d4
muls.l #3,d4
lea 0(a1,d4.l*4),a1
move.l 4(a1),d5
bra.b L592
L589
; if(s==s_bezier_cnt-1)
subq.l #1,d3
cmp.l d3,d0
bne.b L591
L590
; top=*(tfactors+t*3+2);
move.l d1,d3
muls.l #3,d3
lea 0(a1,d3.l*4),a2
move.l $8(a2),d3
; bottom=*(tfactors+t*3);
move.l d1,d4
muls.l #3,d4
move.l 0(a1,d4.l*4),d5
bra.b L592
L591
; top=bottom=*(tfactors+t*3);
move.l d1,d3
muls.l #3,d3
move.l 0(a1,d3.l*4),d5
move.l d5,d3
L592
; if(t==0)
tst.l d1
bne.b L594
L593
; left=*(sfactors+s*3+1);
move.l d0,d1
muls.l #3,d1
lea 0(a0,d1.l*4),a1
move.l 4(a1),d4
; right=*(sfactors+s*3);
muls.l #3,d0
move.l 0(a0,d0.l*4),d2
bra.b L597
L594
; if(t==t_bezier_cnt-1)
subq.l #1,d2
cmp.l d2,d1
bne.b L596
L595
; left=*(sfactors+s*3);
move.l d0,d1
muls.l #3,d1
move.l 0(a0,d1.l*4),d4
; right=*(sfactors+s*3+2);
muls.l #3,d0
lea 0(a0,d0.l*4),a0
move.l $8(a0),d2
bra.b L597
L596
; left=right=*(sfactors+s*3);
muls.l #3,d0
move.l 0(a0,d0.l*4),d2
move.l d2,d4
L597
; if(top>bottom)
cmp.l d5,d3
ble L604
L598
; if(left<right)
cmp.l d2,d4
bge L600
L599
; glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,1,right, 1, top);
move.l d3,-(a7)
pea 1.w
move.l d2,-(a7)
pea 1.w
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_s(display_mode,1,right,1,1,left,0,(GLfloat)lef
fmove.l d4,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
move.l d4,-(a7)
pea 1.w
pea 1.w
move.l d2,-(a7)
pea 1.w
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
; tesselate_bottom_left_corner(display_mode,(GLfloat)(1.0/left),
fmove.l d5,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
move.l d6,-(a7)
jsr _tesselate_bottom_left_corner
add.w #$C,a7
; tesselate_strip_t(display_mode,top,1,1,bottom,1,0,(GLfloat)bot
fmove.l d5,fp0
fmove.l fp0,d0
move.l d0,-(a7)
clr.l -(a7)
pea 1.w
move.l d5,-(a7)
pea 1.w
pea 1.w
move.l d3,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
bra L603
L600
; if(left==right)
cmp.l d2,d4
bne.b L602
L601
; glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,1,right, 0, top);
move.l d3,-(a7)
clr.l -(a7)
move.l d2,-(a7)
pea 1.w
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_t(display_mode,top,0,1,bottom,0,0,(GLfloat)bot
fmove.l d5,fp0
fmove.l fp0,d0
move.l d0,-(a7)
clr.l -(a7)
clr.l -(a7)
move.l d5,-(a7)
pea 1.w
clr.l -(a7)
move.l d3,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
bra L603
L602
; glMapGrid2f(left, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d4,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,1,left, 0, top-1);
move.l d3,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d4,-(a7)
pea 1.w
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_t(display_mode,top-1,0,1,bottom-1,0,0,
fmove.l d5,fp0
fmove.l fp0,d0
move.l d0,-(a7)
clr.l -(a7)
clr.l -(a7)
move.l d5,d0
subq.l #1,d0
move.l d0,-(a7)
pea 1.w
clr.l -(a7)
move.l d3,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
; tesselate_bottom_right_corner(display_mode,top-1,bottom-1,
fmove.l d5,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
subq.l #1,d5
move.l d5,-(a7)
move.l d3,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d6,-(a7)
jsr _tesselate_bottom_right_corner
add.w #$14,a7
; tesselate_strip_s(display_mode,left,1,top-1,right,1,right,
fmove.l d2,fp0
fmove.s fp0,-(a7)
move.l d2,-(a7)
pea 1.w
move.l d2,-(a7)
subq.l #1,d3
move.l d3,-(a7)
pea 1.w
move.l d4,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
L603
bra L616
L604
; if(top==bottom)
cmp.l d5,d3
bne L611
L605
; if(left<right)
cmp.l d2,d4
bge.b L607
L606
; glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,right, 1, top);
move.l d3,-(a7)
pea 1.w
move.l d2,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_s(display_mode,0,right,1,0,left,0,(GLfloat)lef
fmove.l d4,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
move.l d4,-(a7)
clr.l -(a7)
pea 1.w
move.l d2,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
bra L610
L607
; if(left==right)
cmp.l d2,d4
bne.b L609
L608
; glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,right, 0, top);
move.l d3,-(a7)
clr.l -(a7)
move.l d2,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
bra.b L610
L609
; glMapGrid2f(left, 0.0, 1.0, top, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d3,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d4,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,left, 0, top-1);
move.l d3,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d4,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_s(display_mode,left,0,top-1,right,0,right,
fmove.l d2,fp0
fmove.s fp0,-(a7)
move.l d2,-(a7)
clr.l -(a7)
move.l d2,-(a7)
subq.l #1,d3
move.l d3,-(a7)
clr.l -(a7)
move.l d4,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
L610
bra L616
L611
; if(left<right)
cmp.l d2,d4
bge L613
L612
; glMapGrid2f(right, 0.0, 1.0, bottom, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d5,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,right-1, 1, bottom);
move.l d5,-(a7)
pea 1.w
move.l d2,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_s(display_mode,0,right-1,1,0,left-1,0,
fmove.l d4,fp0
fmove.s fp0,-(a7)
clr.l -(a7)
move.l d4,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
pea 1.w
move.l d2,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
; tesselate_top_left_corner(display_mode,right-1,left-1,
fmove.l d3,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d4,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
subq.l #1,d4
move.l d4,-(a7)
move.l d2,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d6,-(a7)
jsr _tesselate_top_left_corner
add.w #$14,a7
; tesselate_strip_t(display_mode,1,bottom,right-1,1,top,top,
fmove.l d3,fp0
fmove.l fp0,d0
move.l d0,-(a7)
move.l d3,-(a7)
move.l d3,-(a7)
pea 1.w
subq.l #1,d2
move.l d2,-(a7)
move.l d5,-(a7)
pea 1.w
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
bra L616
L613
; if(left==right)
cmp.l d2,d4
bne.b L615
L614
; glMapGrid2f(right, 0.0, 1.0, bottom, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d5,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d2,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,right-1, 0, bottom);
move.l d5,-(a7)
clr.l -(a7)
move.l d2,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_t(display_mode,0,bottom,right-1,0,top,top,
fmove.l d3,fp0
fmove.l fp0,d0
move.l d0,-(a7)
move.l d3,-(a7)
move.l d3,-(a7)
clr.l -(a7)
subq.l #1,d2
move.l d2,-(a7)
move.l d5,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
bra L616
L615
; glMapGrid2f(left, 0.0, 1.0, bottom, 0.0, 1.0);
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d5,-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l d4,-(a7)
jsr _glMapGrid2f
add.w #$18,a7
; glEvalMesh2(display_mode,0,left-1, 0, bottom-1);
move.l d5,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d4,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _glEvalMesh2
add.w #$14,a7
; tesselate_strip_t(display_mode,0,bottom-1,left-1,0,top-1,top,
fmove.l d3,fp0
fmove.l fp0,d0
move.l d0,-(a7)
move.l d3,-(a7)
move.l d3,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d4,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d5,d0
subq.l #1,d0
move.l d0,-(a7)
clr.l -(a7)
move.l d6,-(a7)
jsr _tesselate_strip_t
add.w #$20,a7
; tesselate_top_right_corner(display_mode,left-1,bottom-1,right,
fmove.l d3,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
fmove.l d2,fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
fmove.s fp0,-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l d5,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d4,d0
subq.l #1,d0
move.l d0,-(a7)
move.l d6,-(a7)
jsr _tesselate_top_right_corner
add.w #$1C,a7
; tesselate_strip_s(display_mode,left-1,0,bottom-1,right-1,0,rig
fmove.l d2,fp0
fmove.s fp0,-(a7)
move.l d2,-(a7)
clr.l -(a7)
subq.l #1,d2
move.l d2,-(a7)
subq.l #1,d5
move.l d5,-(a7)
clr.l -(a7)
subq.l #1,d4
move.l d4,-(a7)
move.l d6,-(a7)
jsr _tesselate_strip_s
add.w #$20,a7
L616
movem.l (a7)+,d2-d6/a2
rts
SECTION "_draw_polygon_mode:0",CODE
;static void
_draw_polygon_mode
L642 EQU -$18
link a5,#L642
movem.l d2-d7/a2-a4,-(a7)
movem.l $C(a5),a2-a4
L617
; t_bezier_cnt=new_ctrl->t_bezier_cnt;
move.l a3,a0
move.l $64(a0),d4
; s_bezier_cnt=new_ctrl->s_bezier_cnt;
move.l a3,a0
move.l $60(a0),d6
; glEnable(nobj->surface.geom.type);
move.l $E0(a2),-(a7)
jsr _glEnable
addq.w #4,a7
; if(new_ctrl->color_ctrl)
move.l a3,a1
tst.l $18(a1)
beq.b L619
L618
; glEnable(nobj->surface.color.type);
move.l $10C(a2),-(a7)
jsr _glEnable
addq.w #4,a7
; do_color=GL_TRUE;
move.b #1,-$D(a5)
bra.b L620
L619
; do_color=GL_FALSE;
clr.b -$D(a5)
L620
; if(new_ctrl->normal_ctrl)
move.l a3,a1
tst.l $30(a1)
beq.b L622
L621
; glEnable(nobj->surface.normal.type);
move.l $164(a2),-(a7)
jsr _glEnable
addq.w #4,a7
; do_normal=GL_TRUE;
move.b #1,-$E(a5)
bra.b L623
L622
; do_normal=GL_FALSE;
clr.b -$E(a5)
L623
; if(new_ctrl->texture_ctrl)
move.l a3,a1
tst.l $48(a1)
beq.b L625
L624
; glEnable(nobj->surface.texture.type);
move.l $138(a2),-(a7)
jsr _glEnable
addq.w #4,a7
; do_texture=GL_TRUE;
moveq #1,d7
bra.b L626
L625
; do_texture=GL_FALSE;
moveq #0,d7
L626
; for(j=0;
moveq #0,d5
bra L640
L627
; for(i=0;
moveq #0,d3
bra L638
L628
; offset=j*t_bezier_cnt + i;
move.l d5,d2
muls.l d4,d2
add.l d3,d2
; if(fine_culling_test_3D(nobj,*(new_ctrl->geom_offsets + offset)
move.l $DC(a2),-(a7)
move.l a3,a0
move.l $8(a0),-(a7)
move.l a3,a0
move.l 4(a0),-(a7)
move.l $D8(a2),-(a7)
move.l $D4(a2),-(a7)
move.l a3,a1
move.l $C(a1),a0
move.l 0(a0,d2.l*4),-(a7)
move.l a2,-(a7)
jsr _fine_culling_test_3D
add.w #$1C,a7
tst.b d0
beq.b L630
L629
;
bra L637
L630
; glMap2f(nobj->surface.geom.type,0.0,1.0,new_ctrl->geom_s_strid
move.l a3,a1
move.l $C(a1),a0
move.l 0(a0,d2.l*4),-(a7)
move.l $D8(a2),-(a7)
move.l a3,a0
move.l $8(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $D4(a2),-(a7)
move.l a3,a0
move.l 4(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $E0(a2),-(a7)
jsr _glMap2f
add.w #$28,a7
; if(do_color)
tst.b -$D(a5)
beq.b L632
L631
; glMap2f(nobj->surface.color.type,0.0,1.0,
move.l a3,a1
move.l $24(a1),a0
move.l 0(a0,d2.l*4),-(a7)
move.l $104(a2),-(a7)
move.l a3,a0
move.l $20(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $100(a2),-(a7)
move.l a3,a0
move.l $1C(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $10C(a2),-(a7)
jsr _glMap2f
add.w #$28,a7
L632
; if(do_normal)
tst.b -$E(a5)
beq.b L634
L633
; glMap2f(nobj->surface.normal.type,0.0,1.0,
move.l a3,a1
move.l $3C(a1),a0
move.l 0(a0,d2.l*4),-(a7)
move.l $15C(a2),-(a7)
move.l a3,a0
move.l $38(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $158(a2),-(a7)
move.l a3,a0
move.l $34(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $164(a2),-(a7)
jsr _glMap2f
add.w #$28,a7
L634
; if(do_texture)
tst.b d7
beq.b L636
L635
; glMap2f(nobj->surface.texture.type,0.0,1.0,
move.l a3,a1
move.l $54(a1),a0
move.l 0(a0,d2.l*4),-(a7)
move.l $130(a2),-(a7)
move.l a3,a0
move.l $50(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $12C(a2),-(a7)
move.l a3,a0
move.l $4C(a0),-(a7)
move.l #$3F800000,-(a7)
clr.l -(a7)
move.l $138(a2),-(a7)
jsr _glMap2f
add.w #$28,a7
L636
; nurbs_map_bezier(display_mode,sfactors,tfactors,s_bezier_cnt,
move.l d3,-(a7)
move.l d5,-(a7)
move.l d4,-(a7)
move.l d6,-(a7)
move.l $18(a5),-(a7)
move.l a4,-(a7)
move.l $8(a5),-(a7)
jsr _nurbs_map_bezier
add.w #$1C,a7
L637
addq.l #1,d3
L638
cmp.l d4,d3
blt L628
L639
addq.l #1,d5
L640
cmp.l d6,d5
blt L627
L641
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_init_new_ctrl:0",CODE
;void
XDEF _init_new_ctrl
_init_new_ctrl
move.l 4(a7),a0
L643
; p->geom_ctrl=p->color_ctrl=p->normal_ctrl=p->texture_ctrl=NULL;
clr.l $48(a0)
clr.l $30(a0)
clr.l $18(a0)
clr.l (a0)
; p->geom_offsets=p->color_offsets=p->normal_offsets=p->texture_offs
clr.l $54(a0)
clr.l $3C(a0)
clr.l $24(a0)
clr.l $C(a0)
; p->s_bezier_cnt=p->t_bezier_cnt=0;
clr.l $64(a0)
clr.l $60(a0)
rts
SECTION "_augment_new_ctrl:0",CODE
;GLenum
XDEF _augment_new_ctrl
_augment_new_ctrl
movem.l d2/d3/a2-a4,-(a7)
move.l $1C(a7),a2
move.l $18(a7),a4
L644
; p->s_bezier_cnt=(p->geom_s_pt_cnt)/(nobj->surface.geom.sorder);
move.l $10(a2),d0
divsl.l $D4(a4),d0
move.l d0,$60(a2)
; p->t_bezier_cnt=(p->geom_t_pt_cnt)/(nobj->surface.geom.torder);
move.l $14(a2),d0
divsl.l $D8(a4),d0
move.l d0,$64(a2)
; offset_size=(p->s_bezier_cnt)*(p->t_bezier_cnt);
move.l $60(a2),d2
muls.l $64(a2),d2
; p->geom_t_stride=nobj->surface.geom.dim;
move.l $DC(a4),$8(a2)
; p->geom_s_stride=(p->geom_t_pt_cnt)*(nobj->surface.geom.dim);
move.l $14(a2),d0
muls.l $DC(a4),d0
move.l d0,4(a2)
; p->color_t_stride=nobj->surface.color.dim;
move.l $108(a4),$20(a2)
; p->color_s_stride=(p->color_t_pt_cnt)*(nobj->surface.color.dim);
move.l $2C(a2),d0
muls.l $108(a4),d0
move.l d0,$1C(a2)
; p->normal_t_stride=nobj->surface.normal.dim;
move.l $160(a4),$38(a2)
; p->normal_s_stride=(p->normal_t_pt_cnt)*(nobj->surface.normal.dim);
move.l $44(a2),d0
muls.l $160(a4),d0
move.l d0,$34(a2)
; p->texture_t_stride=nobj->surface.texture.dim;
move.l $134(a4),$50(a2)
; p->texture_s_stride=(p->texture_t_pt_cnt)*(nobj->surface.texture.d
move.l $5C(a2),d0
muls.l $134(a4),d0
move.l d0,$4C(a2)
; if((p->geom_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offset_si
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,$C(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L646
L645
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l a4,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2-a4
rts
L646
; if(glu_do_sampling_uv(nobj,&new_ctrl,&sfactors,&tfactors)
tst.l $18(a2)
beq.b L649
L647
; if((p->color_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offset
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,$24(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L649
L648
; free_new_ctrl(p);
move.l a2,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l a4,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2-a4
rts
L649
; if(p->normal_ctrl)
tst.l $30(a2)
beq.b L652
L650
; if((p->normal_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offse
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,$3C(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L652
L651
; free_new_ctrl(p);
move.l a2,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l a4,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2-a4
rts
L652
; if(p->texture_ctrl)
tst.l $48(a2)
beq.b L655
L653
; if((p->texture_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offs
move.l d2,d0
moveq #2,d2
asl.l d2,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,$54(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L655
L654
; free_new_ctrl(p);
move.l a2,-(a7)
jsr _free_new_ctrl
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l a4,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2-a4
rts
L655
; for(i=0;
moveq #0,d1
bra.b L660
L656
; for(j=0;
moveq #0,d0
bra.b L658
L657
; *(p->geom_offsets + i*(p->t_bezier_cnt) + j) =
move.l $D4(a4),d2
muls.l d1,d2
muls.l $DC(a4),d2
muls.l $14(a2),d2
move.l (a2),a1
lea 0(a1,d2.l*4),a1
move.l $DC(a4),d2
muls.l d0,d2
muls.l $D8(a4),d2
lea 0(a1,d2.l*4),a1
move.l $64(a2),d2
muls.l d1,d2
move.l $C(a2),a0
lea 0(a0,d2.l*4),a0
move.l a1,0(a0,d0.l*4)
addq.l #1,d0
L658
cmp.l $64(a2),d0
blt.b L657
L659
addq.l #1,d1
L660
cmp.l $60(a2),d1
blt.b L656
L661
; if(p->color_ctrl)
tst.l $18(a2)
beq.b L668
L662
; for(i=0;
moveq #0,d1
bra.b L667
L663
; for(j=0;
moveq #0,d0
bra.b L665
L664
; *(p->color_offsets + i*(p->t_bezier_cnt) + j) =
move.l $100(a4),d2
muls.l d1,d2
muls.l $108(a4),d2
muls.l $2C(a2),d2
move.l $18(a2),a1
lea 0(a1,d2.l*4),a1
move.l $108(a4),d2
muls.l d0,d2
muls.l $104(a4),d2
lea 0(a1,d2.l*4),a1
move.l $64(a2),d2
muls.l d1,d2
move.l $24(a2),a0
lea 0(a0,d2.l*4),a0
move.l a1,0(a0,d0.l*4)
addq.l #1,d0
L665
cmp.l $64(a2),d0
blt.b L664
L666
addq.l #1,d1
L667
cmp.l $60(a2),d1
blt.b L663
L668
; if(p->normal_ctrl)
tst.l $30(a2)
beq.b L675
L669
; for(i=0;
moveq #0,d1
bra.b L674
L670
; for(j=0;
moveq #0,d0
bra.b L672
L671
; *(p->normal_offsets + i*(p->t_bezier_cnt) + j) =
move.l $158(a4),d2
muls.l d1,d2
muls.l $160(a4),d2
muls.l $44(a2),d2
move.l $30(a2),a1
lea 0(a1,d2.l*4),a1
move.l $160(a4),d2
muls.l d0,d2
muls.l $15C(a4),d2
lea 0(a1,d2.l*4),a1
move.l $64(a2),d2
muls.l d1,d2
move.l $3C(a2),a0
lea 0(a0,d2.l*4),a0
move.l a1,0(a0,d0.l*4)
addq.l #1,d0
L672
cmp.l $64(a2),d0
blt.b L671
L673
addq.l #1,d1
L674
cmp.l $60(a2),d1
blt.b L670
L675
; if(p->texture_ctrl)
tst.l $48(a2)
beq.b L682
L676
; for(i=0;
moveq #0,d1
bra.b L681
L677
; for(j=0;
moveq #0,d0
bra.b L679
L678
; *(p->texture_offsets + i*(p->t_bezier_cnt) + j) =
move.l $12C(a4),d2
muls.l d1,d2
muls.l $134(a4),d2
muls.l $5C(a2),d2
move.l $48(a2),a1
lea 0(a1,d2.l*4),a1
move.l $134(a4),d2
muls.l d0,d2
muls.l $130(a4),d2
lea 0(a1,d2.l*4),a1
move.l $64(a2),d2
muls.l d1,d2
move.l $54(a2),a0
lea 0(a0,d2.l*4),a0
move.l a1,0(a0,d0.l*4)
addq.l #1,d0
L679
cmp.l $64(a2),d0
blt.b L678
L680
addq.l #1,d1
L681
cmp.l $60(a2),d1
blt.b L677
L682
moveq #0,d0
movem.l (a7)+,d2/d3/a2-a4
rts
SECTION "_do_nurbs_surface:0",CODE
;void
XDEF _do_nurbs_surface
_do_nurbs_surface
L705 EQU -$70
link a5,#L705
move.l a2,-(a7)
move.l $8(a5),a2
L683
; if(test_nurbs_surfaces(nobj)!=GLU_NO_ERROR)
move.l a2,-(a7)
jsr _test_nurbs_surfaces
addq.w #4,a7
tst.l d0
beq.b L685
L684
move.l (a7)+,a2
unlk a5
rts
L685
; init_new_ctrl(&new_ctrl);
pea -$70(a5)
jsr _init_new_ctrl
addq.w #4,a7
; if(convert_surfs(nobj,&new_ctrl)!=GLU_NO_ERROR)
pea -$70(a5)
move.l a2,-(a7)
jsr _convert_surfs
addq.w #$8,a7
tst.l d0
beq.b L687
L686
move.l (a7)+,a2
unlk a5
rts
L687
; if(augment_new_ctrl(nobj,&new_ctrl)!=GLU_NO_ERROR)
pea -$70(a5)
move.l a2,-(a7)
jsr _augment_new_ctrl
addq.w #$8,a7
tst.l d0
beq.b L689
L688
move.l (a7)+,a2
unlk a5
rts
L689
; switch(nobj->sampling_method)
move.l $A4(a2),d0
cmp.l #$18778,d0
beq L696
bgt.b L706
cmp.l #$18777,d0
beq.b L690
bra L699
L706
cmp.l #$18779,d0
beq.b L693
bra L699
;
L690
; if(glu_do_sampling_3D(nobj,&new_ctrl,&sfactors,&tfactors)!=
pea -$8(a5)
pea -4(a5)
pea -$70(a5)
move.l a2,-(a7)
jsr _glu_do_sampling_3D
add.w #$10,a7
tst.l d0
beq.b L692
L691
; free_new_ctrl(&new_ctrl);
pea -$70(a5)
jsr _free_new_ctrl
addq.w #4,a7
move.l (a7)+,a2
unlk a5
rts
L692
;
bra.b L700
L693
; if(glu_do_sampling_uv(nobj,&new_ctrl,&sfactors,&tfactors)!=
pea -$8(a5)
pea -4(a5)
pea -$70(a5)
move.l a2,-(a7)
jsr _glu_do_sampling_uv
add.w #$10,a7
tst.l d0
beq.b L695
L694
; free_new_ctrl(&new_ctrl);
pea -$70(a5)
jsr _free_new_ctrl
addq.w #4,a7
move.l (a7)+,a2
unlk a5
rts
L695
;
bra.b L700
L696
; if(glu_do_sampling_param_3D(nobj,&new_ctrl,&sfactors,&tfactors)
pea -$8(a5)
pea -4(a5)
pea -$70(a5)
move.l a2,-(a7)
jsr _glu_do_sampling_param_3D
add.w #$10,a7
tst.l d0
beq.b L698
L697
; free_new_ctrl(&new_ctrl);
pea -$70(a5)
jsr _free_new_ctrl
addq.w #4,a7
move.l (a7)+,a2
unlk a5
rts
L698
;
bra.b L700
L699
; abort();
jsr _abort
L700
; glFrontFace(GL_CW);
pea $900.w
jsr _glFrontFace
addq.w #4,a7
; switch(nobj->display_mode)
move.l $A(a2),d0
cmp.l #$18790,d0
beq.b L702
bgt.b L707
cmp.l #$186AC,d0
beq.b L701
bra.b L703
L707
cmp.l #$18791,d0
beq.b L702
bra.b L703
;
L701
; draw_polygon_mode(GL_FILL,nobj,&new_ctrl,sfactors,tfactors);
move.l -$8(a5),-(a7)
move.l -4(a5),-(a7)
pea -$70(a5)
move.l a2,-(a7)
pea $1B02.w
jsr _draw_polygon_mode
add.w #$14,a7
;
bra.b L704
L702
; draw_polygon_mode(GL_LINE,nobj,&new_ctrl,sfactors,tfactors);
move.l -$8(a5),-(a7)
move.l -4(a5),-(a7)
pea -$70(a5)
move.l a2,-(a7)
pea $1B01.w
jsr _draw_polygon_mode
add.w #$14,a7
;
bra.b L704
L703
; abort();
jsr _abort
L704
; free(sfactors);
move.l -4(a5),-(a7)
jsr _free
addq.w #4,a7
; free(tfactors);
move.l -$8(a5),-(a7)
jsr _free
addq.w #4,a7
; free_new_ctrl(&new_ctrl);
pea -$70(a5)
jsr _free_new_ctrl
addq.w #4,a7
move.l (a7)+,a2
unlk a5
rts
END